package com.itextpdf.text.pdf;
import com.itextpdf.testutils.CompareTool;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.junit.BeforeClass;
import org.junit.Test;
import junit.framework.Assert;
public class TaggedPdfPageEventsTest extends PdfPageEventHelper {
private static String CMP_FOLDER ="./src/test/resources/com/itextpdf/text/pdf/TaggedPdfPageEventsTest/";
private static String OUTPUT_FOLDER = "./target/com/itextpdf/test/pdf/TaggedPdfPageEventsTest/";
@BeforeClass
public static void init() {
new File(OUTPUT_FOLDER).mkdirs();
}
@Test
public void test() throws IOException, DocumentException, InterruptedException {
String file = "tagged_pdf_page_events.pdf";
final Document document = new Document();
final PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(OUTPUT_FOLDER + file));
pdfWriter.setTagged();
pdfWriter.setPageEvent(new TaggedPdfPageEventsTest());
document.open();
document.add(new Paragraph("Hello"));
document.newPage();
document.add(new Paragraph("World"));
document.close();
// compare
CompareTool compareTool = new CompareTool();
String errorMessage = compareTool.compareByContent(OUTPUT_FOLDER + file, CMP_FOLDER + file, OUTPUT_FOLDER, "diff");
if (errorMessage != null) {
Assert.fail(errorMessage);
}
}
@Override
public void onStartPage(PdfWriter writer, Document document) {
final PdfPTable headerTable = new PdfPTable(1);
headerTable.addCell(new Phrase("Header"));
try {
writeTable(writer.getDirectContent(), headerTable, new Rectangle(0, document.getPageSize().getHeight()-50f, document.getPageSize().getWidth(), document.getPageSize().getHeight()));
} catch (DocumentException e) {
e.printStackTrace(); // TODO catch exception properly
}
}
@Override
public void onEndPage(final PdfWriter writer, final Document document) {
final PdfPTable footerTable = new PdfPTable(1);
footerTable.addCell(new Phrase("Footer"));
try {
writeTable(writer.getDirectContent(), footerTable, new Rectangle(0, 0, document.getPageSize().getWidth(), 50f));
} catch (DocumentException e) {
e.printStackTrace(); // TODO catch exception properly
}
}
private void writeTable(final PdfContentByte directContent, final PdfPTable table, final Rectangle coordinates) throws DocumentException {
final ColumnText columnText = new ColumnText(directContent);
columnText.setSimpleColumn(coordinates);
columnText.addElement(table);
columnText.go();
}
}